Various techniques have been developed for increasing the reliability of data storage systems and protecting against failure due to data loss. In a redundant array of independent disks (RAID) configuration, data are stored in arrays of storage devices to provide fault tolerance and improved data access performance. There are several different RAID configurations; RAID 1, RAID 5, and RAID 6 being the most widely used. In a system employing a RAID 1 architecture, storage devices are mirrored. In RAID 5 and RAID 6 architectures, user data and parity data are distributed across a group of drives. In traditional data storage systems employing hard disk drives, algorithms have been adopted to maximize data access performance in RAID arrays. These algorithms have been based on such policies as load balancing data transfers across the drives in an array, or minimizing seek times, because these are the factors that most affect spinning plate track/sector based disk drive performance.